package org.dromara.web.service;

import org.dromara.web.domain.SysJob;

public interface jobStatusService {
    /**
     * 更新数据库中的status
     *
     * @param methodName
     * @param newStatus
     */
    void updateJobStatus(String methodName, int newStatus);

    /**
     * 更新当前方法的状态，并记录前一个方法的状态
     *
     * @param methodName
     * @param serviceName
     * @param serviceMethod
     * @return
     */
    SysJob updateCurrentMethodStatus(String methodName, String serviceName, String serviceMethod);

    /**
     * 重置前一个方法的状态
     *
     * @param methodName
     * @param serviceName
     * @param serviceMethod
     */
    void resetPreviousMethodStatus(String methodName, String serviceName, String serviceMethod);

    /**
     * 重置所有方法的状态
     * 注意：这是一个全局操作，会影响所有方法的状态
     */
    void resetAllMethodStatus();

    /**
     * status减1
     *
     * @param methodName
     */
    void decrementStatus(String methodName);

    /**
     * 获取当前方法的名称
     *
     * @param serviceName
     * @param serviceMethod
     */
    String getCurrentMethodName(String serviceName, String serviceMethod);

    /**
     * 从缓存中移除方法名
     *
     * @param serviceName
     * @param serviceMethod
     */
    void removeMethodNameFromCache(String serviceName, String serviceMethod);
}
